Many programming languages provide various memory management techniques for automatically clearing objects or other software components that are no longer being used from memory. This form of memory management is sometimes referred to as “garbage collection.” Efficient garbage collection is important to preserving memory resources for the operation of the software while not adversely affecting performance of the software. Some garbage collection solutions may be inefficient. Other solutions may not preserve thread safety, while others may not be scalable. It is with respect to these and other considerations that the present improvements have been needed.